package com.ruoyi.manage.organization.domain;

import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.ruoyi.common.annotation.Dict;
import com.ruoyi.common.annotation.Excel;
import com.ruoyi.common.core.domain.BaseEntity;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Builder;
import lombok.Data;
import lombok.experimental.Tolerate;

import javax.validation.constraints.NotBlank;
import java.io.Serializable;
import java.util.Date;
import java.util.List;


/**
 * 金融机构信息对象 biz_organization
 *
 * @author ruoyi
 * @date 2025-08-14
 */
@Data
@ApiModel(value="金融机构信息对象", description="金融机构信息")
@TableName("biz_organization")
@Builder
public class BizOrganization extends BaseEntity implements Serializable {

    private static final long serialVersionUID=1L;


    /**
     *  ID
     * 对应字典表： $column.dictTable ，对应字段值： ，对应字段名：$column.dictName
     */

    @Excel(name = "ID")
    private Long  id;

    /**
     *  上级ID
     * 对应字典表： $column.dictTable ，对应字段值： ，对应字段名：$column.dictName
     */

    @Excel(name = "上级ID")
    @ApiModelProperty(value = "上级ID")
    private  Long  parentId;

    /**
     *  机构类型
     * 对应字典表： $column.dictTable ，对应字段值： ，对应字段名：$column.dictName
     */

    @Excel(name = "机构类型")
    @ApiModelProperty(value = "机构类型")
    private  Long  orgType;

    /**
     *  机构层级
     * 对应字典表： $column.dictTable ，对应字段值： ，对应字段名：$column.dictName
     */

    @Excel(name = "机构层级")
    @ApiModelProperty(value = "机构层级")
    private  Integer  level;

    /**
     *  机构编码
     * 对应字典表： $column.dictTable ，对应字段值： ，对应字段名：$column.dictName
     */

    @Excel(name = "机构编码")
    @ApiModelProperty(value = "机构编码")
    private  String  orgCode;

    /**
     *  机构路径
     * 对应字典表： $column.dictTable ，对应字段值： ，对应字段名：$column.dictName
     */

    @Excel(name = "机构路径")
    @ApiModelProperty(value = "机构路径")
    private  String  orgPath;

    /**
     *  机构名称
     * 对应字典表： $column.dictTable ，对应字段值： ，对应字段名：$column.dictName
     */

    @Excel(name = "机构名称")
    @ApiModelProperty(value = "机构名称")
    @NotBlank(message = "机构名称不能为空")
    private  String  orgName;

    /**
     *  连接地址
     * 对应字典表： $column.dictTable ，对应字段值： ，对应字段名：$column.dictName
     */

    @Excel(name = "连接地址")
    @ApiModelProperty(value = "连接地址")
    private  String  orgUrl;

    /**
     *  机构简称
     * 对应字典表： $column.dictTable ，对应字段值： ，对应字段名：$column.dictName
     */

    @Excel(name = "机构简称")
    @ApiModelProperty(value = "机构简称")
    @NotBlank(message = "机构简称不能为空")
    private  String  shortName;

    /**
     *  机构logo
     * 对应字典表： $column.dictTable ，对应字段值： ，对应字段名：$column.dictName
     */

    @Excel(name = "机构logo")
    @ApiModelProperty(value = "机构logo")
    @NotBlank(message = "机构logo不能为空")
    private  String  logo;

    /**
     *  推荐logo
     * 对应字典表： $column.dictTable ，对应字段值： ，对应字段名：$column.dictName
     */

    @Excel(name = "推荐logo")
    @ApiModelProperty(value = "推荐logo")
    private  String  recommendLogo;

    /**
     *  简介
     * 对应字典表： $column.dictTable ，对应字段值： ，对应字段名：$column.dictName
     */

    @Excel(name = "简介")
    @ApiModelProperty(value = "简介")
    private  String  introduction;

    /**
     *  全国性
     * 对应字典表： $column.dictTable ，对应字段值：national_type ，对应字段名：$column.dictName
     */

    @ApiModelProperty(value = "全国性")
    private  String  national;

    /**
     *  服务区域编码
     * 对应字典表： $column.dictTable ，对应字段值： ，对应字段名：$column.dictName
     */

    @Excel(name = "服务区域编码")
    @ApiModelProperty(value = "服务区域编码")
    private  String  nationalCode;

    /**
     *  省
     * 对应字典表： $column.dictTable ，对应字段值： ，对应字段名：$column.dictName
     */

    @Excel(name = "省")
    @ApiModelProperty(value = "省")
    @NotBlank(message = "省不能为空")
    private  String  province;

    /**
     *  市
     * 对应字典表： $column.dictTable ，对应字段值： ，对应字段名：$column.dictName
     */

    @Excel(name = "市")
    @ApiModelProperty(value = "市")
    private  String  city;

    /**
     *  区县
     * 对应字典表： $column.dictTable ，对应字段值： ，对应字段名：$column.dictName
     */

    @Excel(name = "区县")
    @ApiModelProperty(value = "区县")
    private  String  district;

    /**
     *  省代码
     * 对应字典表： $column.dictTable ，对应字段值： ，对应字段名：$column.dictName
     */

    @Excel(name = "省代码")
    @ApiModelProperty(value = "省代码")
    private  String  provinceCode;

    /**
     *  市代码
     * 对应字典表： $column.dictTable ，对应字段值： ，对应字段名：$column.dictName
     */

    @Excel(name = "市代码")
    @ApiModelProperty(value = "市代码")
    private  String  cityCode;

    /**
     *  区（县）代码
     * 对应字典表： $column.dictTable ，对应字段值： ，对应字段名：$column.dictName
     */

    @Dict(readConverterExp = "县=")
    @Excel(name = "区", readConverterExp = "县=")
    @ApiModelProperty(value = "区",notes="县=")
    private  String  districtCode;

    /**
     *  详细地址
     * 对应字典表： $column.dictTable ，对应字段值： ，对应字段名：$column.dictName
     */

    @Excel(name = "详细地址")
    @ApiModelProperty(value = "详细地址")
    @NotBlank(message = "详细地址不能为空")
    private  String  address;

    /**
     *  推荐
     * 对应字典表： $column.dictTable ，对应字段值：yes_no ，对应字段名：$column.dictName
     */

    @Dict(dicCode = "yes_no")
    @Excel(name = "推荐", dictType="yes_no")
    @ApiModelProperty(value = "推荐")
    private  Integer  recommend;

    /**
     *  置顶
     * 对应字典表： $column.dictTable ，对应字段值：yes_no ，对应字段名：$column.dictName
     */

    @Dict(dicCode = "yes_no")
    @Excel(name = "置顶", dictType="yes_no")
    @ApiModelProperty(value = "置顶")
    private  Integer  top;

    /**
     *  状态
     * 对应字典表： $column.dictTable ，对应字段值：busi_status ，对应字段名：$column.dictName
     */

    @Dict(dicCode = "busi_status")
    @Excel(name = "状态", dictType="busi_status")
    @ApiModelProperty(value = "状态")
    private  Integer  status;

    /**
     *  排序
     * 对应字典表： $column.dictTable ，对应字段值： ，对应字段名：$column.dictName
     */

    @Excel(name = "排序")
    @ApiModelProperty(value = "排序")
    private  Long  sort;

    /**
     *  产品总数
     * 对应字典表： $column.dictTable ，对应字段值： ，对应字段名：$column.dictName
     */

    @Excel(name = "产品总数")
    @ApiModelProperty(value = "产品总数")
    private  Long  productTotal;

    /**
     *  对接总数
     * 对应字典表： $column.dictTable ，对应字段值： ，对应字段名：$column.dictName
     */

    @Excel(name = "对接总数")
    @ApiModelProperty(value = "对接总数")
    private  Long  dockingTotal;

    /**
     *  创建者
     * 对应字典表： $column.dictTable ，对应字段值： ，对应字段名：$column.dictName
     */

    @Excel(name = "创建者")
    @ApiModelProperty(value = "创建者")
    private  String  createBy;

    /**
     *  创建时间
     * 对应字典表： $column.dictTable ，对应字段值： ，对应字段名：$column.dictName
     */

    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "创建时间", width = 30, dateFormat = "yyyy-MM-dd")
    @ApiModelProperty(value = "创建时间")
    private  Date  createTime;

    /**
     *  修改者
     * 对应字典表： $column.dictTable ，对应字段值： ，对应字段名：$column.dictName
     */

    @Excel(name = "修改者")
    @ApiModelProperty(value = "修改者")
    private  String  updateBy;

    /**
     *  更新时间
     * 对应字典表： $column.dictTable ，对应字段值： ，对应字段名：$column.dictName
     */

    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "更新时间", width = 30, dateFormat = "yyyy-MM-dd")
    @ApiModelProperty(value = "更新时间")
    private  Date  updateTime;

    /**
     *  删除
     * 对应字典表： $column.dictTable ，对应字段值：yes_no ，对应字段名：$column.dictName
     */

    @Dict(dicCode = "yes_no")
    @Excel(name = "删除", dictType="yes_no")
    @ApiModelProperty(value = "删除")
    private  Integer  deleted;

    /**
     *  数据版本
     * 对应字典表： $column.dictTable ，对应字段值： ，对应字段名：$column.dictName
     */

    @Excel(name = "数据版本")
    @ApiModelProperty(value = "数据版本")
    private  String  version;

    /**
     *  $column.columnComment
     * 对应字典表： $column.dictTable ，对应字段值： ，对应字段名：$column.dictName
     */

    @Dict(readConverterExp = "$column.readConverterExp()")
    @Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()")
    @ApiModelProperty(value = "$comment",notes="$column.readConverterExp()")
    private  String  remark;

    /**
     *  白名单机构
     * 对应字典表： $column.dictTable ，对应字段值： ，对应字段名：$column.dictName
     */

    @Excel(name = "白名单机构")
    @ApiModelProperty(value = "白名单机构")
    private  Long  whitelistMarker;

    /**
     *  融资流程
     * 对应字典表： $column.dictTable ，对应字段值： ，对应字段名：$column.dictName
     */

    @Excel(name = "融资流程")
    @ApiModelProperty(value = "融资流程")
    private  String  financingProcess;
    @TableField(exist = false)
    private List<BizOrganizationAudit> bizOrganizationAuditList;

    @TableField(exist = false)
    private List<String> ids;
    @Tolerate
    public BizOrganization(){}
}
